Soft real-time garbage collection for dynamic dispatch languages

نویسنده

  • Andrew M. Cheadle
چکیده

Common to many high-level, declarative and object oriented languages are the use of dynamic dispatch and garbage collection. Dynamic dispatch is the mechanism by which the selection of a method to run, based on both its signature, and the type of one or more of its arguments, is made. A garbage collector is responsible for efficient ‘recycling’ of memory that is no longer needed, termed ‘garbage’, via a process of automatic deallocation that returns the memory to the program’s allocation area. In this work we investigate various schemes for the efficient implementation of soft real-time multi-generation garbage collection algorithms within dynamic dispatch languages. Our focus is on techniques that reduce and eliminate the synchronisation costs between interleaved user program and collector execution. Furthermore, we work to bound the amount of time for which the user program is paused, while the collector runs, so that real-time constraints can be met. This dissertation describes the implementation of a production uniprocessor collector for Haskell, and evaluates its performance against implementations of existing algorithms. An important focus of our analysis is the effect that the various memory overheads of each scheme have on the performance of the collector. Our experiments demonstrate that closure code specialisation improves performance when it is used to remove dynamic space overheads. A 30% code bloat on top of the baseline generational collector buys us a time-based incremental generational collector whose mutator overhead is 5% when averaged across the nofib benchmark suite. Furthermore, not only does the collector achieve a consistent minimum mutator utilisation of 50% at around 10 to 15 milliseconds, but results, on average, in a performance increase of around 5% at the expense of a small additional amount of memory. The remainder of the dissertation explores the applicability of our collector to other dynamic dispatch languages with a prototype implementation for Java.

برای دانلود متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

منابع مشابه

Garbage Collection and Eciency in Dynamic Metacircular Runtimes

In dynamic object-oriented languages, low-level mechanisms such as just-in-time compilation, object allocation, garbage collection (GC) and method dispatch are o‰en handled by virtual machines (VMs). VMs are typically implemented using static languages, allowing only few changes at run time. In such systems, the VM is not part of the language and interfaces to memory management or method dispat...

متن کامل

CLOS Eiffel and Sather: A Comparison

data types, inheritance, dynamic binding and garbage collection. bstract data types provide encapsulation and inheritance eases reuse. Both promote extensibility and modi ability. These two requirements seem widely accepted and we will not address them further. ynamic binding of functions to function names is one key to the exibility and extensibility of object-oriented languages. It allows new...

متن کامل

Reliable General Purpose Dynamic Memory Management for Real

Traditional dynamic memory management techniques for imperative programming languages are unsuitable for reliable real-time applications because their worst-case time and space requirements are insufficiently bounded. This is demonstrated by detailed measurements of several real-world workloads. A special hardware-assisted real-time garbage collection system has been designed to facilitate reli...

متن کامل

Compiling with Types

Compilers for monomorphic languages, such as C and Pascal, take advantage of types to determine data representations, alignment, calling conventions, and register selection. However, these languages lack important features including polymorphism, abstract datatypes, and garbage collection. In contrast, modern programming languages such as Standard ML (SML), provide all of these features, but ex...

متن کامل

Lock-free atom garbage collection for multithreaded Prolog

The runtime system of dynamic languages such as Prolog or Lisp and their derivatives contain a symbol table, in Prolog often called the atom table. A simple dynamically resizing hash-table used to be an adequate way to implement this table. As Prolog becomes fashionable for 24 × 7 server processes we need to deal with atom garbage collection and concurrent access to the atom table. Classical lo...

متن کامل

ذخیره در منابع من


  با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید

برای دانلود متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

عنوان ژورنال:

دوره   شماره 

صفحات  -

تاریخ انتشار 2010